昨天處理的是草稿從雲端走到我的電腦,今天換成反方向:我在 Obsidian 裡改完之後,要怎麼把它送回 Macaron?
最省事的想法,是讓電腦幫我盯著那個資料夾,只要檔案一有變動,就自動送出去。但不知道大家有沒有這種經驗:
如果每存一次就送一次,一篇草稿可能會被送出去十幾次,中間還夾著很多改到一半的版本,最後一種情況更麻煩,會把不該送的東西一起帶走。
所以 Macaron 的第一條規則,是等檔案安靜下來再說。只要檔案有變動就開始計時,60 秒內又被動到,就重新計時,一直到整整 60 秒沒有人再碰它,才進入下一步;還沒安靜夠久的時候,它只會回報「再等等」。
這一段測試的時候,我沒有真的讓程式等 60 秒,而是直接告訴它「最後一次修改在什麼時候、現在是什麼時候」,讓它自己判斷,這樣測試跑得快,每一次的結果也都一樣。
檔案安靜下來之後,Macaron 不會馬上送,它會先確認這個檔案是不是它該管的。它只管放占卜草稿的那個資料夾,而且只管裡面一般的文字檔,刪除、改名、捷徑、跑到資料夾外面的路徑,它都不處理。
接著它會把 Day 15 那一套檢查重新跑一遍,確認格式對、牌沒有被換掉、內容指紋也對得上。
還有一個狀況它會直接停下來:如果我在同一個專案裡,還有別的檔案已經放進「準備要送」的清單裡,它就不會送。它也不會替我把那些東西從清單上拿掉,那是我的現場,它不碰。
這一天我覺得最有意思的,是「沒有變」這件事要怎麼判斷。
照理說很簡單,拿現在這份的內容指紋,跟上一版比一比,一樣就是沒變。可是「上一版的指紋」要從哪裡來?如果讓外面直接告訴它上一版是多少,萬一記錯了,或者給了一個錯的數字,Macaron 就可能把有修改的檔案當成沒變,或把新增的檔案當成修改。
所以現在,上一版一定要從最後一次真正存檔的紀錄裡讀出來。新增的檔案,要能證明上一版根本沒有它;修改的檔案,要能證明上一版跟現在不一樣;只有內容真的一樣、而且明確被標成沒變,才算數。
檢查完之後,只會有四種結果:再等等、沒有變、拒絕,或者可以準備送出。就算是最後一種,也只是一份「準備好了」的計畫,上面清楚寫著還沒有真的送出去,也沒有任何收據。
今天沒有真的啟動任何在背景監看檔案的程式,也沒有真的把檔案送到 GitHub,所有的判斷都是用假的時間和假的檔案狀態驗證的。
草稿來回的兩個方向都有了,但還有一個問題:檔案送到 GitHub 之後,雲端的 Macaron 要怎麼知道「有新東西來了」?